package cn.ygh.bbo.system.service;

import cn.ygh.bbo.framerwork.core.BaseService;
import cn.ygh.bbo.framerwork.core.Grid;
import cn.ygh.bbo.system.bean.RolePermission;
import org.springframework.data.domain.Pageable;
import java.io.Serializable;
import java.util.List;

/**
 * 描述：角色权限  Service
 * @author ygh
 */
public interface RolePermissionService extends BaseService {
    /**
     * 保存对象
     * @param rolePermission 对象信息
     * @return
     */
    int save(RolePermission rolePermission);

    /**
     * 更新对象
     * @param rolePermission 对象信息
     * @return
     */
    int update(RolePermission rolePermission);

    /**
     * 批量更新
     * @param rolePermission 对象信息
     * @param ids
     * @return
     */
    int updateBatchByIds(RolePermission rolePermission, Serializable[] ids);

    /**
    * 根据ID删除对象
    * @param id
    * @return
    */
    int deleteById(Serializable id);

    /**
    * 根据ID数组批量删除对象
    * @param ids
    * @return
    */
    int deleteByIds(Serializable[] ids);

    /**
    * 根据ID获取对象
    * @param id
    * @return
    */
    RolePermission getById(Serializable id);

    /**
    * 根据ID数组获取对象列表
    * @param ids
    * @return
    */
    List<RolePermission> listfindByIn(Serializable[] ids);

    /**
    * 根据对象信息获取满足条件的对象列表
    * @param rolePermission 对象信息
    * @param pageable 分页条件为空则不分页
    * @return
    */
    List<RolePermission> listfind(RolePermission rolePermission, Pageable pageable);

    /**
    * 根据对象信息获取满足条件的对象列表和总数
    * @param rolePermission 对象信息
    * @param pageable 分页条件
    * @return
    */
    Grid listGrid(RolePermission rolePermission, Pageable pageable);

    /**
     * 获取角色的相关权限关联
     * @param roleIds
     * @return
     */
    List<RolePermission> listfindByRoleIds(List<Integer> roleIds);

    /**
     * 获取相关数量
     * @param roleId
     * @param permissionId
     * @return
     */
    long getCountByRoleIdAndPermissionId(Integer roleId,Integer permissionId);

    /**
     * 删除角色的所有权限关联
     * @param roleId
     */
    void deleteByRoleId(Integer roleId);
}
